﻿using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidad;
using System.Data.SqlClient;

using System.Collections.Generic;
using System.Web;

using System.Data;
using System.IO;

namespace DataAccess
{
    public class EntradaData
    {
        private String literalConexion;

        public EntradaData(String literalConexion)
        {
            this.literalConexion = literalConexion;
        }

        public LinkedList<Entrada> GetEntradas()
        {

            String consulta = "select * from Entrada";

            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand comandoSeleccionar = new SqlCommand(consulta, conexion);
            conexion.Open();
            SqlDataReader reader = comandoSeleccionar.ExecuteReader();
            LinkedList<Entrada> entradas = new LinkedList<Entrada>();
            int y = 0;
            while (reader.Read())
            {

                Entrada entrada = new Entrada();
                entrada.IdEntrada = reader.GetInt32(0);
                entrada.Titulo = reader.GetString(1);
                entrada.FechaEntrada = reader.GetDateTime(2);
                entrada.Contenido = reader.GetString(3);
                entrada.IdCategoria = reader.GetInt32(4);
                if (reader.IsDBNull(5))
                {
                    entrada.RutaImagen = null;
                }
                else
                {
                    entrada.RutaImagen = reader.GetString(5);
                }
                if (reader.IsDBNull(6))
                {
                    entrada.RutaDocumento = null;
                }
                else
                {
                    entrada.RutaDocumento = reader.GetString(6);
                }

                entradas.AddLast(entrada);
                y++;
            }

            return entradas;
        }

        public LinkedList<Entrada> GetEntradasPorCategoria(int idCategoria)
        {
            String consulta = "select * from Entrada " +
                                "where id_categoria = " + idCategoria;

            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand cmdConsulta = new SqlCommand(consulta, conexion);

            conexion.Open();

            SqlDataReader reader = cmdConsulta.ExecuteReader();

            LinkedList<Entrada> entradas = new LinkedList<Entrada>();

            while (reader.Read())
            {
                Entrada entrada = new Entrada();

                entrada.IdEntrada = reader.GetInt32(0);
                entrada.Titulo = reader.GetString(1);
                entrada.FechaEntrada = reader.GetDateTime(2);
                entrada.Contenido = reader.GetString(3);
                entrada.IdCategoria = reader.GetInt32(4);
                if (reader.IsDBNull(5))
                {

                }
                else
                {
                    entrada.RutaImagen = reader.GetString(5);
                }
                if (reader.IsDBNull(6))
                {

                }
                else
                {
                    entrada.RutaDocumento = reader.GetString(6);
                }

                entradas.AddLast(entrada);

            }

            return entradas;

        }

        public Entrada GetEntradaPorId(int idEntrada)
        {

            String consulta = "select * from Entrada "
                              + " where id_entrada = " + idEntrada;

            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand cmdConsulta = new SqlCommand(consulta, conexion);

            conexion.Open();

            SqlDataReader reader = cmdConsulta.ExecuteReader();

            Entrada entrada = new Entrada();

            if (reader.Read())
            {
                entrada.IdEntrada = reader.GetInt32(0);
                entrada.Titulo = reader.GetString(1);
                entrada.FechaEntrada = reader.GetDateTime(2);
                entrada.Contenido = reader.GetString(3);
                entrada.IdCategoria = reader.GetInt32(4);
                if (reader.IsDBNull(5))
                {

                }
                else
                {
                    entrada.RutaImagen = reader.GetString(5);
                }
                if (reader.IsDBNull(6))
                {

                }
                else
                {
                    entrada.RutaDocumento = reader.GetString(6);
                }

            }
            conexion.Close();

            return entrada;
        }

        public void GuardarEntrada(String titulo, String contenido, int IdCategoria, String rutaImagen, String rutaDocumento)
        {
            DateTime fecha = DateTime.Today;

            String consulta = "Insert into Entrada values ('" + titulo + "','" + fecha + "','" + contenido + "'," + IdCategoria + ",'" + rutaImagen + "','" + rutaDocumento + "')";

            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand cmdGuardarEntrada = new SqlCommand(consulta, conexion);

            conexion.Open();

            try
            {
                cmdGuardarEntrada.ExecuteReader();
            }
            catch (Exception) { }

            conexion.Close();
        }

        public LinkedList<Entrada> BuscarEntradaPorTitulo(String nombreEntrada)
        {
            String consulta = "select * from Entrada where titulo_entrada like '%" + nombreEntrada + "%'";

            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand cmdBuscarEntradaPorTitulo = new SqlCommand(consulta, conexion);

            conexion.Open();

            SqlDataReader reader = cmdBuscarEntradaPorTitulo.ExecuteReader();

            LinkedList<Entrada> entradas = new LinkedList<Entrada>();

            while (reader.Read())
            {
                Entrada entrada = new Entrada();

                entrada.IdEntrada = reader.GetInt32(0);
                entrada.Titulo = reader.GetString(1);
                entrada.FechaEntrada = reader.GetDateTime(2);
                entrada.Contenido = reader.GetString(3);
                entrada.IdCategoria = reader.GetInt32(4);
                if (reader.IsDBNull(5))
                {

                }
                else
                {
                    entrada.RutaImagen = reader.GetString(5);
                }
                if (reader.IsDBNull(6))
                {

                }
                else
                {
                    entrada.RutaDocumento = reader.GetString(6);
                }

                entradas.AddLast(entrada);
            }

            return entradas;
        }

        public void EditarEntrada(int idEntrada1, String titulo, String contenido, int IdCategoria, String rutaImagen, String rutaDocumento)
        {
            DateTime fecha = DateTime.Today;

            String consulta = "Update Entrada Set titulo_entrada = '" + titulo + "',fecha_entrada ='" + fecha + "', contenido ='" + contenido + "',id_categoria =" + IdCategoria + ", ruta_imagen ='" + rutaImagen + "', ruta_documento ='" + rutaDocumento + "'"
            +" where id_entrada = " +idEntrada1;

            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand cmdEditarEntrada = new SqlCommand(consulta, conexion);

            conexion.Open();

            try
            {
                cmdEditarEntrada.ExecuteReader();
            }
            catch (Exception) { }

            conexion.Close();

        }
    }
}